package com.huatai.manage.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huatai.common.util.StringUtil;
import com.huatai.manage.entity.TbStageMainEntity;
import com.huatai.manage.entity.TbSystemStageEntity;
import com.huatai.manage.mapper.TbSystemStageMapper;
import com.huatai.manage.query.PageQuery;
import com.huatai.manage.service.TbSystemStageService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huatai.manage.vo.ResultVo;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 阶段字典 服务实现类
 * </p>
 *
 * @author luoxc
 * @since 2023-03-22
 */
@Service
public class TbSystemStageServiceImpl extends ServiceImpl<TbSystemStageMapper, TbSystemStageEntity> implements TbSystemStageService {

	/**
	 * 分页获取阶段字典
	 *
	 * @param pageQuery
	 * @return
	 */
	@Override
	public Page<TbSystemStageEntity> pageList(PageQuery<TbSystemStageEntity> pageQuery) {
		Page<TbSystemStageEntity> page = new Page<>(pageQuery.getCurrent(), pageQuery.getSize());
		LambdaQueryWrapper<TbSystemStageEntity> wrapper = Wrappers.<TbSystemStageEntity>lambdaQuery();
		wrapper.like(StringUtil.isNotBlank(pageQuery.getData().getStageName()), TbSystemStageEntity::getStageName, pageQuery.getData().getStageName());
		return this.page(page, wrapper);
	}

	/**
	 * 根据阶段id获取信息
	 *
	 * @param stageId
	 * @return
	 */
	@Override
	public TbSystemStageEntity getByStageId(String stageId) {
		LambdaQueryWrapper<TbSystemStageEntity> wrapper = Wrappers.<TbSystemStageEntity>lambdaQuery();
		wrapper.eq(TbSystemStageEntity::getStageId, stageId);
		return getOne(wrapper);
	}

	/**
	 * 根据阶段id删除信息
	 *
	 * @param stageIds
	 * @return
	 */
	@Override
	public boolean removes(List<String> stageIds) {
		if (stageIds.isEmpty()) return false;
		LambdaQueryWrapper<TbSystemStageEntity> wrapper = Wrappers.<TbSystemStageEntity>lambdaQuery();
		wrapper.in(TbSystemStageEntity::getStageId, stageIds);
		return remove(wrapper);
	}

	/**
	 * 根据阶段id修改信息
	 *
	 * @param tbSystemStageEntity
	 * @return
	 */
	@Override
	public boolean update(TbSystemStageEntity tbSystemStageEntity) {
		LambdaUpdateWrapper<TbSystemStageEntity> wrapper = Wrappers.<TbSystemStageEntity>lambdaUpdate();
		wrapper.eq(TbSystemStageEntity::getStageId, tbSystemStageEntity.getStageId());
		return update(tbSystemStageEntity, wrapper);
	}


	/**
	 * @Description 查询所有数据
	 * @Date 2023/4/4 9:31
	 * @Param
	 */
	@Override
	public List<ResultVo> selectList() {
		List<ResultVo> resultVos = new ArrayList<>();
		List<TbSystemStageEntity> list = this.list();
		if (list.isEmpty()) return null;
		list.forEach(i -> {
			resultVos.add(new ResultVo(i.getStageId(), i.getStageName()));
		});
		return resultVos;
	}
}
